//自己实现代码
class Solution {
public:
    int largestRectangleArea(vector<int>& heights) {
        int ans=0;
        int sz=heights.size();
        vector<int> left(sz,-1);
        vector<int>right(sz,sz);
        stack<int> S;
        for(int i=0;i<sz;i++)
        {
            while(!S.empty()&&heights[i]<heights[S.top()])
            {
                right[S.top()]=i;
                S.pop();

            }
            if(!S.empty()) left[i]=S.top();
            S.push(i);
        }
        for(int i=0;i<sz;i++)
        {
            ans=max(ans,(right[i]-left[i]-1)*heights[i]);
        }
        return ans;
    }

};
